CC     = bcc.exe
LINK   = tlink.exe
ARCH   = tlib.exe
INCDIR = $(BC31)\INCLUDE
LIBDIR = $(BC31)\LIB
OBJS   = $(LIBDIR)\c0wl.obj
LIBS   = mathwl.lib+ import.lib+ cwl.lib
DEF2   = -D___X86 -D___16bit -D___WIN -D___BC31
CFLG2  = -WE -c -ml -3 -f287 -K -w+ -j100 -i64 \
         -G -O -h -Ff -n. -H=dio.sym -I. -I$(INCDIR)
LFLG2  = /Twe /c /x /L$(LIBDIR)

BIN    = ..\bin
DEST   = $(BIN)\$(VAR)

#==========================================================================

LIB_OBJS_1 = sys\win\_main.obj \
             sys\win\_std.obj \
             sys\win\_kbd.obj \
             sys\win\_disp.obj \
             sys\win\_graph.obj \
             sys\std.obj
LIB_OBJS_2 = sys\memo.obj \
             sys\kbd.obj \
             sys\disp.obj \
             sys\graph.obj \
             sys\font.obj \
             sys\cons.obj
LIB_OBJS_3 = sys\file.obj \
             sys\tim.obj \
             sys\mice.obj \
             sys\real.obj \
             sys\sig.obj \
             lib\str.obj \
             lib\num.obj
LIB_OBJS   = $(LIB_OBJS_1) $(LIB_OBJS_2) $(LIB_OBJS_3)

DIO_OBJS_1 = main\dio.obj \
             eval\eval.obj \
             eval\cmd.obj \
             eval\arit.obj \
             eval\efpu.obj \
             vp\vp.obj
DIO_OBJS_2 = vp\opfn.obj \
             vp\vfpu.obj \
             vp\sys.obj \
             vp\lib.obj
DIO_OBJS   = $(DIO_OBJS_1) $(DIO_OBJS_2)

#==========================================================================

.c.obj:
        $(CC) @dio_c.cfg -o$@ $<

#==========================================================================

all: $(DEST)\dio.lib $(DEST)\dio.exe $(DEST)\gmod.exe

#==========================================================================

dio_c.cfg: $(BIN)\print.exe
        $(BIN)\print.exe $(CFLG2) $(CFLG) >dio_c.cfg
        $(BIN)\print.exe $(DEF2) $(DEF) >>dio_c.cfg

libs.lst: $(BIN)\print.exe
        $(BIN)\print.exe $(LIBS) >libs.lst

dlibs.lst: $(BIN)\print.exe
        $(BIN)\print.exe $(DEST)\dio.lib+ >dlibs.lst
        $(BIN)\print.exe $(LIBS) >>dlibs.lst

lib.lst: $(BIN)\print.exe $(BIN)\lst_lib.exe
        $(BIN)\print.exe $(LIB_OBJS_1) >_lib.lst
        $(BIN)\print.exe $(LIB_OBJS_2) >>_lib.lst
        $(BIN)\print.exe $(LIB_OBJS_3) >>_lib.lst
        $(BIN)\print.exe >>_lib.lst
        $(BIN)\lst_lib.exe _lib.lst lib.lst
        del _lib.lst

dio.lst: $(BIN)\print.exe $(BIN)\lst_lnk.exe
        $(BIN)\print.exe $(OBJS) >_dio.lst
        $(BIN)\print.exe $(DIO_OBJS_1) >>_dio.lst
        $(BIN)\print.exe $(DIO_OBJS_2) >>_dio.lst
        $(BIN)\print.exe >>_dio.lst
        $(BIN)\lst_lnk.exe _dio.lst dio.lst
        del _dio.lst

#==========================================================================

$(DEST)\dio.lib: dio_c.cfg lib.lst $(LIB_OBJS)
        $(ARCH) $@ @lib.lst
        del $(DEST)\dio.bak

$(DEST)\dio.exe: sys\asc0816.h dio_c.cfg dio.lst dlibs.lst \
                 $(DIO_OBJS) $(DEST)\dio.lib
        $(LINK) $(LFLG2) $(LFLG) @dio.lst,$@,,@dlibs.lst,dio.def;

$(DEST)\gmod.exe: sys\asc0816.h dio_c.cfg dlibs.lst \
                   test\gmod.obj $(DEST)\dio.lib
        $(LINK) $(LFLG2) $(LFLG) $(OBJS)+test\gmod.obj,$@,,@dlibs.lst,grmod.def;

$(DEST)\tkey.exe: sys\asc0816.h dio_c.cfg dlibs.lst \
                  test\tkey.obj $(DEST)\dio.lib
        $(LINK) $(LFLG2) $(LFLG) $(OBJS)+test\tkey.obj,$@,,@dlibs.lst,default.def;

$(DEST)\gkey.exe: sys\asc0816.h dio_c.cfg dlibs.lst \
                  test\gkey.obj $(DEST)\dio.lib
        $(LINK) $(LFLG2) $(LFLG) $(OBJS)+test\gkey.obj,$@,,@dlibs.lst,default.def;

$(DEST)\mkey.exe: sys\asc0816.h dio_c.cfg dlibs.lst \
                  test\mkey.obj $(DEST)\dio.lib
        $(LINK) $(LFLG2) $(LFLG) $(OBJS)+test\mkey.obj,$@,,@dlibs.lst,default.def;

$(DEST)\mchr.exe: sys\asc0816.h dio_c.cfg dlibs.lst \
                  test\mchr.obj $(DEST)\dio.lib
        $(LINK) $(LFLG2) $(LFLG) $(OBJS)+test\mchr.obj,$@,,@dlibs.lst,default.def;

$(DEST)\vdb.exe: sys\asc0816.h dio_c.cfg dlibs.lst \
                 test\vdb.obj $(DEST)\dio.lib
        $(LINK) $(LFLG2) $(LFLG) $(OBJS)+test\vdb.obj,$@,,@dlibs.lst,default.def;

#==========================================================================

sys\asc0816.h: $(BIN)\b2c.exe $(BIN)\asc0816.fnt
        $(BIN)\b2c.exe $(BIN)\asc0816.fnt $@ N1 Fnt_asc0816[]

#==========================================================================
